B-SIMPLE helps you write good top-down, modular programs in Basic.
You don't have to be a programmer to use it. Your programs should
be simple to write, be simple to debug, and be simple to change later.
HOW TO USE IT: RUN "B-SIMPLE"
B-SIMPLE is menu driven. When RUN, it establishes a skeleton for your
program, using Blocks of 100 line numbers. You can have up to 199 modules
for SUBROUTINES, plus ten for INITIALIZATION, and ten for MAIN LINE PROGRAM.
B-SIMPLE helps you add, list, renumber, or delete modules. It keeps a
directory and puts in module names, etc. to make your listing easier to
understand. When you are done, you can delete B-SIMPLE (quite simply).
A BLOCK IS 100 LINE NUMBERS
Each module has a reserved block of 100 line numbers. Up to 22 lines may be
used for the module (a screen's worth). B-SIMPLE uses four of those lines for
module name, RETURN, etc. You can use up to 18 lines.
Keeping modules short is good programming!"
SUBROUTINES are put from line #100 to line #20000.
From the menu you can:
1 or A=ADD a new module (and enter code using AUTO)
2 or L=LIST an old module (and edit if desired)
3 or R=RENUMBER & LIST an old module (and edit if desired)
4 =DELETE an old module, or
5 =DIRECTORY (display a list of all modules)
INITIALIZATION and the MAIN LINE PROGRAM are between lines #20000 and #22000.
From the menu you can:
6=LIST Blocks of INITIALIZATION or MAIN LINE PROGRAM, or
7=REINITIALIZE Your Program Information
-------------------------------
Menu -- 1 or A=ADD a new module
-------------------------------
B-SIMPLE asks for module number, MN (1 thru 199), and name (up to 20
characters.) It then prints out 7 lines of information, and asks you to
HIT RETURN 7 TIMES.
This puts your module's name in the directory, and in a remark on line MN01 of
the block. RETURN is put on line MN99. A blank remark is placed above your
module (on line MN00) and below your module, to make the listing look good.
AUTO line numbering starts at line MN10 of your block, with steps of 5 lines.
Your code can go from line MN10 (always the first line of code) thru line MN95.
RETURN is always line MN99 of the block.
You can stop AUTO line numbering with CTRL-BREAK. Type RUN (or hit F2) to get
back to the B-SIMPLE menu.
You call this subroutine, from another subroutine, or the MAIN LINE PROGRAM,
with a line that says: GOSUB MN00 (or GOSUB MN10 if speed is critical).
MS$=" Menu -- 2 or L=LIST a module (and edit if desired) ":GOSUB 61110:PRINT
PRINT " B-SIMPLE asks for module number, MN (1 thru 199), and lists the module.":PRINT
PRINT " You can add lines, change lines, etc., using normal BASIC editing.":PRINT
PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
MS$=" Menu -- 3 or R=RENUMBER & LIST (and edit if desired) ":GOSUB 61110:PRINT
PRINT " B-SIMPLE asks for module number, MN (1 thru 199), renumbers, and then lists the module.":PRINT
PRINT " You can add lines, change lines, etc., using normal BASIC editing.":PRINT
PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2). If you have inserted code on lines that don't end in 0 or 5, you should go back to the B-SIMPLE menu and select 3 -- RENUMBER.":PRINT
MS$=" Menu -- 4=DELETE an old module ":GOSUB 61110:PRINT
PRINT " B-SIMPLE asks for module number, MN (1 thru 199), and prints out the line numbers it uses. It asks you to HIT RETURN a sufficient number of times to delete the lines.":PRINT
PRINT " This removes the subroutine and it's entry in the B-SIMPLE directory.":PRINT
PRINT " You can get back to the B-SIMPLE menu by typing RUN (or hitting F2).":PRINT
PRINT " (By the way, if you try to DELETE a non-existent module, or one that has no code on line MN10, you'll get an error message, but no harm will be done.)":PRINT
MS$=" Menu -- 7=REINITIALIZE Your Program Information":GOSUB 61110:PRINT
PRINT " B-SIMPLE allows you to change the way your name, address, program name, version number, date, etc. appear in title block":PRINT
PRINT " You'll be prompted to enter your name, address, phone, program name, version, date, etc. B-SIMPLE will then print several lines of information, and ask you toHIT RETURN 4 TIMES.":PRINT
PRINT " This will update the title block, and send you back to the B-SIMPLE menu.":PRINT
PRINT " Any time you see Ok and a flashing cursor, you can type RUN 10 (or hit F10) and YOUR program will run.":PRINT:PRINT:PRINT
MS$=" TO DELETE B-SIMPLE (quite simply) ":GOSUB 61110:PRINT
PRINT " When your program is done, and you don't need B-SIMPLE anymore, just:":PRINT:PRINT"DELETE 0-9":PRINT"DELETE 41000-65100 (if you want to keep the B-SIMPLE directory), or":PRINT"DELETE 40000-65100 (if you don't want the directory)."
PRINT:PRINT" Then you can run YOUR program by simply typing RUN.":PRINT
FOR I = 1 TO A : PRINT L(I) : NEXT I :PRINT M*100+99: LOCATE 1,1:MS$="HIT ENTER KEY "+STR$(4+A)+" TIMES":GOSUB 61110:RETURN:'within module
GOSUB 61510 : IF FNL (A) >= R THEN MS$ = "CAN'T RESEQUENCE - TOO MANY LINES IN MODULE." : GOSUB 61110 :C=9: RETURN:'within module 61430 N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : return:'within module
N = LO : FOR B = 1 TO A : GOSUB 61610 : GOSUB 61210 : NEXT B : GOTO 61490
PRINT:INPUT "MODULE NAME (UP TO 20 CHAR) "; N$ : IF LEN(N$) > 20 THEN MS$ = "MODULE NAME TOO LONG" : GOSUB 61110 : GOTO 61435
CLS : LOCATE 3,1,0
PRINT 41000!+M TAB(8);"color 0,7:PRINT "; CHR$(34)" " CHR$(34)": color 7,0 : LIST "; Q-10 ; -R-5
L = N : N = FNR (L) : X = FNR (L+2) : LO = L : IF X < Q THEN 61520
A = A + 1 : L(A) = X : L = N : N = FNR (L) : X = FNR (L+2) : IF X < = R THEN 61530
IF L(1) > R AND C = 3 THEN MS$ = "CAN'T RENUMBER A NULL MODULE" : GOSUB 61110 : GOTO 61599
N=LO:GOTO 61599
RETURN :'from def sr
'l n sr
L = N : N = FNR (L) : POKE L + 3 , FNM (B) : POKE L+2 , FNL (B) - 256 * FNM (B)
RETURN :'from l n sr
'
'
'your choice sr
L=-200:SOUND 370,1
COLOR 18+16*(L<0),7:LOCATE Y,2:PRINT " YOUR CHOICE - "+F$+" - ? ";:COLOR 0,7
X$=INKEY$:DEF SEG:POKE 106,0:IF X$<>"" THEN 64150
L=L+1:IF L<1 THEN 64120
SOUND L*37,1:SOUND 32767,14:GOTO 64120
LOCATE Y,2:FOR L=1 TO LEN(F$)+20:PRINT " ";:NEXT:'x$ contains key hit
COLOR 7,0
RETURN :'from your choice sr
'
'quick menu
KEY OFF:COLOR 15,4:CLS:LOCATE 1,2:PRINT " SELECT BY NUMBER B-SIMPLE (Basic Structured IMPLEmentation) (OR LETTER) Version 1.0 2-82 Ira Glickstein 8-662-4202"
LOCATE 5,2:PRINT"1 or A -- ADD a module and enter code"
LOCATE 7,2:PRINT"2 or L -- LIST a module (and edit if desired)"
LOCATE 9,2:PRINT"3 or R -- RENUMBER a module, then list it"
LOCATE 11,2:PRINT"4 -- DELETE a module"
LOCATE 13,2:PRINT"5 -- DIRECTORY display of modules"
LOCATE 15,2:PRINT"6 -- List/Edit INITIALIZATION or MAIN LINE PROGRAM Blocks"
LOCATE 17,2:PRINT "7 -- REINITIALIZE your program information"
LOCATE 19,2:PRINT"8 -- INSTRUCTIONS"
LOCATE 21,2:PRINT"9 -- QUIT and exit program"
LOCATE 24,34:PRINT G$;:LOCATE 25,34:PRINT P$;
Y=23:GOSUB 64110 CHOICE:K=ASC(X$):K=-1*(49*(K=65 OR K=97)+50*(K=76 OR K=108)+51*(K=82 OR K=114)+K*(K>47 AND K<58))-48:PRINT K:IF K>0 AND K<10 THEN 64290 ELSE 64250
KEY ON
RETURN :'from menu sr
'
'directory sr
CLS
LIST 40000-40399
RETURN : 'from directory sr
'
'LIST SR
CLS :ON ERROR GOTO 64680
ON M GOSUB 41001,41002,41003,41004,41005,41006,41007,41008,41009
64620 ON M-9 GOSUB 41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048
64630 ON M-48 GOSUB 41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087
64640 ON M-87 GOSUB 41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100
64650 ON M-100 GOSUB 41101,41102,41103,41104,41105,41106,41107,41108,41109
64660 ON M-109 GOSUB 41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148
64670 ON M-148 GOSUB 41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187
64675 ON M-187 GOSUB 41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199
64677 ON M-199 GOSUB 41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219
64720 PRINT"MAIN LINE PROGRAM utilizes blocks #210 thru 219":PRINT
64730 INPUT "ENTER BLOCK NUMBER (200 - 219): ",M:IF M<200 OR M>219 THEN 64710
64740 GOSUB 64610
64799 RETURN :'from list init & main sr
64800 '
64900 '
64910 CLS:PRINT"B-SIMPLE Version 1.0 2-82 Ira Glickstein 8-662-4202"
64920 PRINT:PRINT:PRINT"TO GET STARTED I'LL NEED A BIT OF PERSONAL INFORMATION"
64930 LOCATE 10,1:PRINT "Please enter your name, address, phone, etc. (up to 40 characters) <--------------------------------------> PROGRAMMERS IDENTITY: ";P$
64940 LOCATE 14,1:PRINT "Please enter your program's name, version, date, etc. (up to 40 characters) <--------------------------------------> PROGRAM IDENTIFICATION: ";G$
64945 LOCATE 16,1:INPUT " PROGRAM IDENTIFICATION: ";G$:G$=LEFT$(G$,40)
64950 CLS:LOCATE 3,1:PRINT"0 GOTO 65010 :'To delete B-SIMPLE, just DELETE 0-9, DELETE 41000-65100":LOCATE 4,1:PRINT"15 ' * "G$;:LOCATE 5,1:PRINT"16 ' * "P$;:LOCATE 4,50:PRINT"* I used B-SIMPLE 1.0 2-82 *";:LOCATE 5,50:PRINT"* by Glickstein 8-662-4202 *
65020 GOSUB 64210 :'menu sr (K is choice: 1=add, 2=list, 3=renumber, 4=delete, 5=directory, 6=list init,main,data, 7=reinit your info, 8=instructions, 9=quit)
65030 IF K=5 OR K=6 OR K=7 OR K=8 THEN 65070
65033 IF K=5 THEN 65060
65035 IF K=9 THEN 65099
65040 IF K=5 THEN 65070
65050 IF K=9 THEN 65099
65060 CLS:PRINT:INPUT "MODULE NUMBER (1-199) "; M : Q = M * 100+10 : R = Q + 85 : S = 5: T = Q: U = 700 + M - 100 * (M>39) - 100 * (M>69) : IF M < 1 OR M > 199 THEN 65010 ELSE DIM L (40)
65070 CLS:PRINT"I'm working on it!":C=K:ON K GOSUB 61410,64610,61410,61410,64510,64710,64910,50010